package com.shujia.spark.core

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Demo1WordCount {
  def main(args: Array[String]): Unit = {
    /**
     * 1、创建spark环境（上下文对象）
     */

    //配置对象
    val conf = new SparkConf()
    //设置job name
    conf.setAppName("wc")
    //设置运行方式
    //local: 本地模式
    conf.setMaster("local")

    //spark环境
    val sc: SparkContext = new SparkContext(conf)


    /**
     * 2、读取文件
     * RDD（弹性的分布式数据集）: 可以理解成一个scala的集合
     */
    val linesRDD: RDD[String] = sc.textFile("data/words.txt")

    //3、将一行拆分成多行
    val wordsRDD: RDD[String] = linesRDD.flatMap((line: String) => line.split(","))

    //4、按照单词分组，统计单词额数量
    val groupByRDD: RDD[(String, Iterable[String])] = wordsRDD.groupBy((word: String) => word)

    //统计单词的数量
    val wordCount: RDD[(String, Int)] = groupByRDD.map {
      case (word: String, iter: Iterable[String]) =>
        val count: Int = iter.size
        (word, count)
    }
    wordCount.foreach(println)

  }

}
